The present invention relates to resource management for cloud database systems.
The cloud computing model is changing how the technology solutions are accessed and consumed by the users. The infrastructure resources and computing capabilities are provided as a service to the users by the cloud providers. The users can leverage a range of attractive features, such as resource elasticity, cost efficiency, and ease of management. The cloud computing model also compels the rethinking of economic relationships between the provider and the users based on the cost and the performance of the services. In a cloud computing environment, resources are shared among different clients. Intelligently managing and allocating resources among various clients is important for system providers, whose business model relies on managing the infrastructure resources in a cost-effective manner while satisfying the client service level agreements (SLAs).
Cloud-based data management services, which are typically as part of Platform-as-a-Service (PaaS) offerings, is one of the most significant components of the new model. In PaaS, service providers generate the revenue by serving the client queries where the revenue is determined by the delivery SLAs. In order to provide such service, the PaaS providers may rent their resources from Infrastructure-as-a-Service (IaaS) providers by paying for the resource usage. Hence, from a PaaS provider point of view, the profit is determined by two factors: revenue and cost.
PaaS providers may have two different types of problems: (1) management of big data by scale-out and (2) consolidation of many small data for cost efficiency. With the former, they need to find the right scale to meet the SLA of a single client, e.g., how many machines are needed to serve a given workload. In this paper, we focus on the latter, a.k.a. multitenant databases, where the service provider looks for the opportunity of cost reduction through tenant consolidation.
In multitenant databases, there are several different levels of sharing, including private virtual machine (VM), private database, private table, and shared table.
In a private virtual machine, each tenant database runs in its own virtual machine. This level of sharing allows users to explicitly control the system resources allocated for each VM, or the corresponding tenant. The current virtualization technologies allow packing of a large number of VMs into physical machines thereby increasing the cost efficiency of infrastructure resources. While it seems quite attractive to consolidate multiple tenants into a physical machine, it requires careful planning and management in order to satisfy tenants' SLAs.
FIG. 1 shows an illustrative exemplary database services in a cloud environment. In this example, the cloud database service provider services clients 10 such as a gold client and a silver one. The cloud computers includes nodes 1, 2, . . . N. Each node includes a plurality of database virtual machines 2 and a virtual machine manager 4. As their workload demand changes, they add or remove database slaves. The clients share the hardware resources where master and slaves are contained in a separate VM which is common in many web applications hosted on large clusters. The service provider charges an agreed-upon fee if it delivers the service by meeting the SLAs and pays a penalty if it fails to meet the SLAs. Consequently, a failure to deliver on SLAs results in higher penalty for the gold client. In reality, of course, there may be more than two kinds of clients.
Most existing resource management strategies are focused on system-level metrics such as queue delay time. In addition, existing techniques lack a feedback process to update the model of the system under management. In addition, most of the work is done manually by relying on the human expertise, which is neither sustainable nor scalable.